package com.naiterui.ehp.bs.im.network.protocl;

/**
 * 定义了消息属性信息检测接口
 * 由于消息类型的种类特别的繁多，
 * 每种不同的类型都对应不同的实体对象
 * 目前采用定义Message<T>对象实体方式定义消息体
 * 其中泛型T对应不同的消息实体对象，
 * 每种对象对应一种特定的消息类型
 * 为了避免在代码中出现大量通过if-else
 * 方式判断消息类型的条件分支
 * 因此，给全部的消息类型定义了统一的属性检测规则{IChecker}
 * 这样在decode消息后
 * 可以通过将对象转换为IChecker对象并直接调用
 * 检测方法进行消息检测
 * <P>File name : Checker.java </P>
 * <P>Author : zhouyanxin </P>
 * <P>Date : 2015年6月22日 </P>
 */
public interface IChecker {

    /**
     * 定义了消息检测的方法
     * 任何消息体只要隶属于Message的范畴
     * 都必须实现该接口并且实现检测方法
     * Checker.selfValidate()<BR>
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月22日 </P>
     * @return
     */
    boolean selfValidate();
}
